//引入封装过的request请求方法
import {request} from '../../request/index.js';

Page({
  data: {
    //左侧的菜单数据
    leftMenuList:[],
    //右侧的商品数据
    rightContent:[],
    //被点击的左侧的菜单
    currentIndex:0,
    //右侧内容的滚动条距离顶部的距离
    scrollTop:0
  },
  //接口的返回数据
  Cates:[],

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
    /* 0. web中的本地存储和小程序中的本地存储的区别
          1 写代码的方式不一样了
            web： 存：localStorage.setItem("key","value") 取：localStorage.getItem("key")；
            小程序： 存：wx.setStorageSync("key","value") 取：wx.getStorageSync('key');
          2 存的时候 有没有做类型转换
            web：不管存入的是什么类型的数据，最终都会先调用下toString()，把数据转成字符串 再存入进去
            小程序：不存在 类型转化的问题 存什么类型的数据进去 获取的时候就是什么类型  
       1.先判断一下本地存储中有没有旧的数据
       2.没有旧数据 直接发送新请求
       3.有旧的数据 同时久的数据还没有过期 就使用 本地存储中的旧的数据即可
    */
    
    //1 获取本地存储中的数据 （小程序中也有本地存储技术的）
    const Cates = wx.getStorageSync('cates');
    console.log(Cates)
    //2 判断
    if(!Cates){
      //不存在就发送请求获取数据
      this.getCates()
    }else{
      //有旧的数据 定义过期的事件为10s
      if(Date.now() - Cates.time > 1000 * 10){
        //重新发送请求
        this.getCates()
      }else {
        //可以使用旧的数据
        this.Cates = Cates.data;
        let leftMenuList = this.Cates.map(v=>v.cat_name);
        let rightContent = this.Cates[0].children;
        this.setData({
         leftMenuList,
         rightContent,
        })
      }
    }
   
  },

  //获取分类的数据
  async getCates (){
    
    //1.使用es7的async和await来发送请求
    const res = await request({url:'/categories'});
    this.Cates = res;
        //把接口中的数据存入到本地存储中
       wx.setStorageSync('cates', {time:Date.now(),data:this.Cates})

        // console.log(res)
       //构造左侧的大菜单数据
       let leftMenuList = this.Cates.map(v=>v.cat_name);
       //构造右侧的商品数据
       let rightContent = this.Cates[0].children
       this.setData({
        leftMenuList,
        rightContent
       })
  },
  //左侧菜单的点击事件
  handleItemTap(e){
    // console.log(e);
    /* 
      1.获取被点击的身上的索引
      2.给data中的currentIndex赋值就可以了
      3.根据不同的索引来渲染右侧的商品内容
    */

    let {index} = e.currentTarget.dataset;
    let rightContent = this.Cates[index].children;
    this.setData({
      currentIndex:index,
      rightContent,
        //重新设置 右侧内容的scroll-view标签的距离顶部的距离
      scrollTop:0
    })
  }

})